package com.rc.web.converter;

import com.rc.pojo.dto.area.AreaAddDTO;
import com.rc.pojo.dto.area.AreaUpdateDTO;
import com.rc.pojo.po.Area;
import com.rc.pojo.vo.area.AreaSeasonalVO;
import com.rc.pojo.vo.area.AreaVO;
import org.mapstruct.Mapper;

/**
 * 区域信息转换器
 * 使用MapStruct实现DTO、PO、VO之间的转换
 */
@Mapper(componentModel = "spring") // 声明为Spring组件
public interface AreaConverter {

    /**
     * 将区域PO转换为VO
     * @param area 区域持久化对象
     * @return 区域视图对象
     */
    AreaVO toVO(Area area);

    /**
     * 将新增DTO转换为PO
     * @param dto 区域新增数据传输对象
     * @return 区域持久化对象
     */
    Area addDTO2DO(AreaAddDTO dto);

    /**
     * 将更新DTO转换为PO
     * @param dto 区域更新数据传输对象
     * @return 区域持久化对象
     */
    Area updateDTO2DO(AreaUpdateDTO dto);

    /**
     * 将区域PO转换为季节性VO
     * @param area 区域持久化对象
     * @return 区域季节性视图对象
     */
    AreaSeasonalVO toSeasonalVO(Area area);
}
